// 定义常量
var NO_LOGIN_CODE = -200;
var AJAX_HANDLE_SUCCESS = 0;
var AJAX_HANDLE_FAIL = 1;

/**
 * 封装异步请求 
 * @param {Object} _url -- 请求的地址
 * @param {Object} _type -- GET|POST
 * @param {Object} _data -- 请求数据，json格式
 * @param {Object} callBack -- 回调函数
 */
function doAjax(_url, _type, _data, showProgress, callBack){
	$.ajax({
		async:true, // 表示异步请求
		url:_url,
		type:_type,
		data:_data,
		dataType:"json",
		beforeSend: function(xhr){
			if(showProgress){
				showProgressMsg();
			}
		},
		success: function(result){
			if(showProgress){
				$.messager.progress("close"); // 关闭进度条
			}
			if(result.code == NO_LOGIN_CODE){
				$.messager.confirm("提示", "登录超时，请重新登录", function(r){
					if(r){
						// 刷新全部应用
						window.parent.location.reload();
					}
				});
			}else{
				callBack(result);
			}
		},
		error: function(e){
			console.log("请求出错:" + e);
		}
	});
}


/**
 * 显示进度条 
 */
function showProgressMsg(){
	var opts = {
		title:"",
		msg:"",
		text:"玩儿命执行中...",
		interval:300
	};
	$.messager.progress(opts); // 展示提交进度条
}


// 一下为扩展方法--------------------------------------------------------------------------
/**
 * 扩展jquery的表单序列化，将表单序列化为json 
 */
$.fn.serializeObject = function() {  
    var o = {};  
    var a = this.serializeArray();  
    $.each(a, function() {  
        if (o[this.name]) {  
            if (!o[this.name].push) {  
                o[this.name] = [ o[this.name] ];  
            }  
            o[this.name].push(this.value || '');  
        } else {  
            o[this.name] = this.value || '';  
        }  
    });  
    return o;  
}  

/**
 * From扩展
 * getData 获取数据接口
 * 
 * @param {Object} jq
 * @param {Object} params 设置为true的话，会把string型"true"和"false"字符串值转化为boolean型。
 */
$.extend($.fn.form.methods, {
    getData: function(jq, params){
        var formArray = jq.serializeArray();
        var oRet = {};
        for (var i in formArray) {
            if (typeof(oRet[formArray[i].name]) == 'undefined') {
                if (params) {
                    oRet[formArray[i].name] = (formArray[i].value == "true" || formArray[i].value == "false") ? formArray[i].value == "true" : formArray[i].value;
                }
                else {
                    oRet[formArray[i].name] = formArray[i].value;
                }
            }
            else {
                if (params) {
                    oRet[formArray[i].name] = (formArray[i].value == "true" || formArray[i].value == "false") ? formArray[i].value == "true" : formArray[i].value;
                }
                else {
                    oRet[formArray[i].name] += "," + formArray[i].value;
                }
            }
        }
        return oRet;
    }
});